package com.example.lottery.service.impl;

import com.example.lottery.common.errorcode.ServiceErrorCodeConstants;
import com.example.lottery.common.exception.ServiceException;
import com.example.lottery.common.utils.UUIDUtil;
import com.example.lottery.service.IPictureService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;

@Slf4j
@Service
public class PictureServiceImpl implements IPictureService {
    @Value("${pic.local-path}")
    private String localPath;
    @Override
    public String savePicture(MultipartFile multipartFile) {
        //1-    根据localPath构造文件对象
        File dir=new File(localPath);
        //如果这个目录不存在的话才新建一个目录
        if(!dir.exists()){
            //根据localPath创建目录
            dir.mkdirs();
        }
        //3-    获取上传的文件名，修改成自定义文件名（唯一 要作为索引返回）
        String fileName = multipartFile.getOriginalFilename();
        //4-    构造索引  aaa.jpg->xxx.jpg
        assert(fileName!=null);
        //从后往前找到第一个.然后获取.以及之后的字符串:.jpg
        String suffix=fileName.substring(fileName.lastIndexOf("."));
        //将截取的字符串和随机字符串拼接（为了唯一）
        fileName=UUIDUtil.create()+suffix;

        //5-    图片保存
        try {
            multipartFile.transferTo(new File(localPath+"/"+fileName));
        } catch (IOException e) {
            log.warn(ServiceErrorCodeConstants.PICTURE_SAVE_ERROR.getMsg());
            throw new ServiceException(ServiceErrorCodeConstants.PICTURE_SAVE_ERROR);
        }
        return fileName;
    }
}
